package dao

import (
	"alan-snippet/internal/models"
)

func FindOrCreateTag(tagName string) (*models.Tag, error) {
	var tag models.Tag
	if err := DB.Where(models.Tag{Name: tagName}).FirstOrCreate(&tag).Error; err != nil {
		return nil, err // 如果任何一个标签处理失败，则立即返回错误
	}
	return &tag, nil
}

func FindOrCreateTagsByNames(names []string) ([]*models.Tag, error) {
	var tags []*models.Tag
	for _, name := range names {
		tag, err := FindOrCreateTag(name)
		if err != nil {
			continue
		}
		tags = append(tags, tag)
	}
	return tags, nil
}

func ListTags() ([]*models.Tag, error) {
	var tags []*models.Tag
	err := DB.Find(&tags).Error
	if err != nil {
		return nil, err
	}
	return tags, nil
}
